package com.ruoyi.server;

import org.eclipse.paho.client.mqttv3.MqttClient;
import org.eclipse.paho.client.mqttv3.MqttException;
import org.eclipse.paho.client.mqttv3.MqttMessage;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service
public class MqttService {

    @Resource
    private MqttClient mqttClient;

    /**
     * 发布消息（默认 QoS 0）
     * @param topic 主题
     * @param message 消息内容（JSON 或字符串）
     */
    public void publish(String topic, String message) {
        publish(topic, message, 0);
    }

    /**
     * 发布消息（指定 QoS）
     * @param topic 主题
     * @param message 消息内容
     * @param qos QoS 等级（0、1、2）
     */
    public void publish(String topic, String message, int qos) {
        MqttMessage mqttMessage = new MqttMessage(message.getBytes());
        mqttMessage.setQos(qos);
        try {
            mqttClient.publish(topic, mqttMessage);
            System.out.println("消息发布成功：topic=" + topic + ", message=" + message);
        } catch (MqttException e) {
            System.err.println("消息发布失败：" + e.getMessage());
            e.printStackTrace();
        }
    }
}